package org.example.lanchain.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.example.lanchain.bean.ApiKey;

import java.util.List;

/**
 * API Key服务接口
 */
public interface ApiKeyService extends IService<ApiKey> {

    /**
     * 创建新的API Key
     * @param userId 用户ID
     * @param name API Key名称
     * @return 创建的API Key对象（包含完整的key值）
     */
    ApiKey createApiKey(Long userId, String name);

    /**
     * 获取用户的所有API Key
     * @param userId 用户ID
     * @return API Key列表
     */
    List<ApiKey> getUserApiKeys(Long userId);

    /**
     * 删除API Key
     * @param id API Key ID
     * @param userId 用户ID（用于权限验证）
     * @return 是否删除成功
     */
    boolean deleteApiKey(Long id, Long userId);

    /**
     * 更新API Key名称
     * @param id API Key ID
     * @param userId 用户ID（用于权限验证）
     * @param name 新名称
     * @return 是否更新成功
     */
    boolean updateApiKeyName(Long id, Long userId, String name);

    /**
     * 重新生成API Key
     * @param id API Key ID
     * @param userId 用户ID（用于权限验证）
     * @return 新的API Key对象
     */
    ApiKey regenerateApiKey(Long id, Long userId);

    /**
     * 验证API Key是否有效
     * @param apiKey API Key值
     * @return 是否有效
     */
    boolean validateApiKey(String apiKey);

    /**
     * 根据API Key获取用户信息
     * @param apiKey API Key值
     * @return API Key对象
     */
    ApiKey getByApiKey(String apiKey);

    /**
     * 更新API Key使用统计
     * @param apiKey API Key值
     */
    void updateUsageStats(String apiKey);
}